package net.sansi.v3correctserver.util;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Created by Fang
 * create time : 2025/2/28
 * IDE : IntelliJ IDEA
 * <p>
 * 一个简易的防抖实现
 */

public class Debounce {

    private Timer timer;
    private final long delay;

    /**
     * 防抖
     *
     * @param delay 延迟时间 ms
     */
    public Debounce(long delay) {
        this.delay = delay;
    }

    /**
     * 需要执行和回调函数
     */
    public interface Callback {
        void invoke();
    }

    /**
     * 运行
     *
     * @param callback 回调函数
     */
    public void run(Callback callback) {
        if (timer != null) {
            timer.cancel();
        }
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                callback.invoke();
            }
        }, delay);
    }

}
